@echo off
echo =========================================
echo 🔧 强制清理 Gradle 缓存（解决文件占用）
echo =========================================

echo.
echo 🛑 第1步: 强制停止所有相关进程...
echo 📋 正在终止 Java 进程...
taskkill /f /im "java.exe" 2>nul
if %ERRORLEVEL% equ 0 (
    echo ✅ Java 进程已终止
) else (
    echo ℹ️ 没有找到运行中的 Java 进程
)

echo 📋 正在终止 Gradle 进程...
taskkill /f /im "gradle.exe" 2>nul
if %ERRORLEVEL% equ 0 (
    echo ✅ Gradle 进程已终止
) else (
    echo ℹ️ 没有找到运行中的 Gradle 进程
)

echo 📋 正在终止其他可能的进程...
taskkill /f /im "gradlew.exe" 2>nul
taskkill /f /im "idea64.exe" 2>nul
taskkill /f /im "AndroidStudio64.exe" 2>nul
taskkill /f /im "Code.exe" 2>nul

echo.
echo ⏰ 第2步: 等待文件释放...
timeout /t 5 /nobreak >nul
echo ✅ 等待完成

echo.
echo 🧹 第3步: 强制清理所有缓存文件夹...
echo 🗑️ 清理项目缓存...
if exist "build" (
    rmdir /s /q "build" 2>nul
    echo ✅ 清理 build 文件夹
)
if exist "android\build" (
    rmdir /s /q "android\build" 2>nul  
    echo ✅ 清理 android\build 文件夹
)
if exist "android\.gradle" (
    rmdir /s /q "android\.gradle" 2>nul
    echo ✅ 清理 android\.gradle 文件夹
)
if exist ".dart_tool" (
    rmdir /s /q ".dart_tool" 2>nul
    echo ✅ 清理 .dart_tool 文件夹
)

echo.
echo 🗑️ 强制清理系统 Gradle 缓存...
set GRADLE_USER_HOME=%USERPROFILE%\.gradle
if exist "%GRADLE_USER_HOME%\caches" (
    echo 正在删除: %GRADLE_USER_HOME%\caches
    rmdir /s /q "%GRADLE_USER_HOME%\caches" 2>nul
    if %ERRORLEVEL% equ 0 (
        echo ✅ 系统 Gradle 缓存清理完成
    ) else (
        echo ⚠️ 部分缓存文件无法删除，将尝试使用 takeown 命令
        takeown /f "%GRADLE_USER_HOME%\caches" /r /d y >nul 2>&1
        icacls "%GRADLE_USER_HOME%\caches" /grant "%USERNAME%:F" /t >nul 2>&1
        rmdir /s /q "%GRADLE_USER_HOME%\caches" 2>nul
        if %ERRORLEVEL% equ 0 (
            echo ✅ 使用管理员权限清理成功
        ) else (
            echo ⚠️ 仍有部分文件无法删除，但不影响继续操作
        )
    )
)

if exist "%GRADLE_USER_HOME%\daemon" (
    echo 正在删除: %GRADLE_USER_HOME%\daemon
    rmdir /s /q "%GRADLE_USER_HOME%\daemon" 2>nul
    echo ✅ Gradle daemon 缓存清理完成
)

echo.
echo 🗑️ 清理 Flutter 缓存...
call flutter clean
echo ✅ Flutter 缓存清理完成

echo.
echo 🔧 第4步: 重新初始化环境...
echo 📦 重新获取 Flutter 依赖...
call flutter pub get
if %ERRORLEVEL% neq 0 (
    echo ❌ flutter pub get 失败
) else (
    echo ✅ flutter pub get 完成
)

echo.
echo 🔧 第5步: 刷新 Gradle Wrapper（新环境）...
cd android
call gradlew wrapper --gradle-version=8.9 --distribution-type=all --no-daemon
if %ERRORLEVEL% neq 0 (
    echo ❌ Gradle wrapper 刷新失败
) else (
    echo ✅ Gradle wrapper 刷新完成
)

echo.
echo 🌐 第6步: 测试依赖下载...
echo 🔄 预热 Gradle 依赖...
call gradlew --refresh-dependencies --no-build-cache dependencies --no-daemon
if %ERRORLEVEL% neq 0 (
    echo ⚠️ 依赖预热失败，但这可能是正常的
) else (
    echo ✅ 依赖预热完成
)

echo.
echo 🚀 第7步: 尝试构建...
call gradlew --refresh-dependencies assembleDebug --no-daemon
if %ERRORLEVEL% neq 0 (
    echo ⚠️ 初始构建失败，请尝试手动运行: flutter run
) else (
    echo ✅ 构建成功！
)
cd ..

echo.
echo =========================================
echo ✅ 强制清理和修复完成！
echo =========================================
echo.
echo 🎯 清理内容：
echo    ✓ 强制终止所有Java/Gradle进程
echo    ✓ 清理所有本地缓存
echo    ✓ 删除系统Gradle缓存
echo    ✓ 重新初始化环境
echo    ✓ 刷新Gradle配置
echo.
echo 🚀 现在可以尝试：
echo    flutter run
echo.
echo 📝 如果问题依然存在：
echo    1. 重启计算机后再试
echo    2. 检查杀毒软件是否阻止访问
echo    3. 使用管理员权限运行
echo.
pause
